6
תגובות
שרשור בשאילתת MYSQL
פתח
hexdec
,
האם אוכל לעשות ככה לדוגמה:
או שחייב לעשות " ואז .$title. "?
תודה.
$query = mysql_query("SELECT `id` FROM `table` WHERE `title` = $title") or die(mysql_error();
או שחייב לעשות " ואז .$title. "?
תודה.
6 תשובות
ענה
משתמש_106771
ב
07 לפברואר 2012
#
כל עוד השאילתה ב " (גרש כפול) ולא ב ' (גרש יחידה) אפשר, עדיף להוסיף את המשתנה ב {}, מבחינת מהירות ותקינות קוד.
דוגמא:
<?php
/* string */
$string = 'phpguide.co.il';
SQL_query("SELECT 1 FROM `tbl` WHERE `row` = '{$string}';");
/* array */
$array['key'] = 'value';
SQL_query("SELECT 1 FROM `tbl` WHERE `row` = '{$array['key']}';");
/* string */
$string = 'phpguide.co.il';
SQL_query("SELECT 1 FROM `tbl` WHERE `row` = '{$string}';");
/* array */
$array['key'] = 'value';
SQL_query("SELECT 1 FROM `tbl` WHERE `row` = '{$array['key']}';");
ענה
משתמש_107470
ב
08 לפברואר 2012
#
אם אתה משתמש בגירשיים כפולות ולא יחידות אז php כבר מציבה את המשתנים לבד.
כמו שנאמר למעלה ^, במקרה של מערכים php לא "מוצאת" את מה צריך להציב מסיבה מסוימת, ולכן יש סוגריים מסולסלים.
ה"סיבה המסוימת" היא ש PHP מחפשת את שם המשתנה הלגיטימי הערוך ביותר שמופיע במחרוזת. סוגריים מרובעים לא יכולים להיות חלק משם משתנה תקני ולכן PHP חושבת שהמשתנה נגמר איפה שמתחילים הסוגריים.
ענה
iiddaannyy
ב
08 לפברואר 2012
#
*לא מדויק, php מתייחסת לסוגריים המרובעים כשם תקני במקרה של הצבת ערכים במחרוזות, הבעיה היא שהיא לא מתייחסת כך לגירשיים (במקרה שפונים לערך אסוציאטיבי).
לכן זה יעבוד:
echo "hello $x[0]";
וזה לא:
echo "hello $x['key']";
הבעיה היא בגירשיים ולא בסוגריים המרובעים. :)